package com.SuanFa.lanqiao;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class a4 {
    // 计算黄金分割数到指定精度
    public static BigDecimal calculateGoldenRatio(int precision) {
        // 设置初始值为1
        BigDecimal result = BigDecimal.ONE;

        // 迭代计算连分数
        for (int i = 0; i < precision + 10; i++) {
            result = BigDecimal.ONE.add(BigDecimal.ONE.divide(result, precision + 10, RoundingMode.HALF_UP));
        }

        // 减去1得到黄金分割数
        result = result.subtract(BigDecimal.ONE);

        // 四舍五入到指定精度
        return result.setScale(precision, RoundingMode.HALF_UP);
    }

    public static void main(String[] args) {
        int precision = 100;
        BigDecimal goldenRatio = calculateGoldenRatio(precision);
        System.out.println("黄金分割数（精确到小数点后" + precision + "位）：");
        System.out.println(goldenRatio);
    }
}
